home *** CD-ROM | disk | FTP | other *** search
- Date: Fri, 1 May 1992 17:00:00 EDT
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: DECmate I problems and more patching problems
-
- DECmate I problems.
-
- Attempts to use the distributed Kermit-12 Version 10g on a
- DECmate (I) system will certainly fail. The coding specific to the
- DECmate I was never tested until recently. Two key routines wait for
- status flags that never raise because the affected registers do not
- generate flag changes/interrupts. This is unrelated to general
- serial data handling which works as originally coded.
-
- There is a simple patch to the program to alleviate the problem:
-
- .LOAD SYS:KERMIT.SV/I$*$ [load the file in image mode and then
- ask for more input. The $ which is
- printed signifies the use of <ESC>
- as the command terminator. The * is
- printed by the system command
- decoder requesting further input.
- The second $ signifies the use of
- <ESC> to end input to the command
- decoder. The loader program
- terminates and control returns to
- the keyboard monitor.]
-
- .ODT [call in ODT to patch the program]
-
- 7/ 0007 0012 [change default baud rate to 2400;
- this is optional]
-
- 353/ 5352 7000 [make a JMP .-1 into a NOP]
- 10302/ 5301 7000 [make a JMP .-1 into a NOP]
- 12243/ 3607 3610 [bump the version number]
-
- ^C [^C to exit to monitor]
-
- .SAVE SYS KERMIT [save patched file]
-
- This also updates the release revision from 10g to 10h. Future
- versions will eliminate the overhead of the now defunct routines.
-
- The only DECmate versions remaining to be tested are:
-
- DECmate I with DP278B (the system used for testing has DP278A)
- DECmate III without internal modem
- DECmate III with internal modem
- DECmate III+
-
- Patching problems.
-
- The restrictions placed on patching apparently stem from a bug
- going back at least as far as OS/8 V3D (likely further). Apparently,
- when a JSW value of 1 is used (as Kermit-12 does), the GET command
- doesn't work. Apparently, the system confuses the need to save the
- contents of 10000-11777 with the need to load it in the first place.
- Kermit-12 operates by first placing once-only code in the affected
- area, then discarding it in favor of a locked-in copy of the USR
- routine. To avoid overhead, the JSW value of 0001 is set to indicate
- there is no need to save this dead code when the USR is swapped in
- over it. Apparently, the GET command sets the =1 too early in the
- load process, so the code that uses the USR to carry out the actions
- of the GET operation doesn't properly load the Kermit-12 code.
-
- Consequently, the warnings documented in previous chapters of the
- .BWR file (below) apply in all cases. The interaction with CCL sited
- below may not apply in all versions, but the GET command problem is
- apparently universal.
-
- cjl
-
- ------------------------------
-
- Date: Mon, 28 October 1991 20:00:00 EST
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: Kermit-12 patching restrictions revisited yet again
-
- Even more operating system ills (will it ever end?):
-
- Still further investigation into operating system bugs in OS/278
- V2 on DECmates reveals that the problem in even worse that realized
- two weeks ago (see previous .BWR article):
-
- When a SAVE command is executed from OS/278 involving a loaded
- handler, the SAVE operation fails! The contents of the files will be
- corrupted in general and will likely become (at least partially) all
- zeroes! The exact scope of the problem has not been ascertained, but
- certain loading tests reveal that the command fails even when
- accessing additional memory beyond field zero and one.
-
- All operations to SYS: or any device co-resident with SYS: (or
- when DSK:=SYS: which is typically the case in many systems but not a
- rule) are unaffected beyond the restrictions reported previously.
-
- Until recently, SAVE commands were of little interest to the
- casual user of OS/278, since program execution and ordinary file
- creation are unaffected. Since there are now several programs to be
- loaded and saved by users, the problem is more significent. Users of
- the direct loading method of acquiring KERMIT-12 are also in the
- affected category.
-
- Clearly all developers and anyone assembling any part of the
- KERMIT-12 package should be aware of this problem. As a precaution,
- all persons using the SAVE command for any reason are advised to use
- the form involving SYS: only to avoid this problem. (Advanced users
- can determine which handlers are possibly co-resident and are thus
- acceptable as well.) The resultant file can always be copied to any
- device as required after the fact.
-
- cjl
-
- ------------------------------
-
- Date: Thu, 10 October 1991 05:00:00 EDT
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: Kermit-12 patching restrictions revisited and .BOO problems
-
- More operating system ills regarding file loading:
-
- Further investigation into operating system bugs in OS/278 V2 on
- DECmates reveals that the problem is worse than first realized:
-
- When using GET or LOAD (ABSLDR) commands, especially when loading
- image files such as FIELD0.SV, FIELD1.SV (the partial load files from
- direct memory loading of K12MIT), or K12MIT.SV with /I, the JSW and
- starting field/address can become "mangled" into unusable values.
- One particular case achieved the impossible value of 6303 for a
- starting field change instruction (legal values are 6203 through 6273
- by 10s).
-
- Consequently, the general recommendation for SAVE commands as
- used in various utilities throughout KERMIT-12 configuration etc., is
- to use explicit starting address and loading locations and JSW
- values. In short, always give a complete description of the SAVE
- operation under OS/278. For example, when direct-loading K12MIT
- through the printer port into the DECmate, the following commands
- should be used:
-
- }LOAD FIELD0.SV/I,FIELD1.SV/I$*$
-
- }SAVE SYS K12MIT.SV 00000-07577,10000-17577;00200=0001
-
- As discussed earlier, the CCL form of the ABSLDR LOAD command
- works even though other seemingly equivalent forms don't. The
- complete SAVE command forces all parameters to be taken explicitly
- from the command; no reliance on system "assumptions" or loading
- artifacts. Always use the complete values for loading taken from the
- relevant program documentation.
-
- Most users of KERMIT-12 are running OS/8 V3D, etc., where this
- sort of system bug isn't seen. In the future, all KERMIT-12
- documentation will give the "verbose" form of the command to contain
- this OS/278 V2-specific problem.
-
- Regarding .BOO format encoding:
-
- The newest release of KERMIT-12 includes .BOO format encoding of
- all binary files and TECO macros as an alternative to ENCODE format.
- ENCODE format is still the preferred method of distribution, but .BOO
- format allows for use with other systems, such as MS-DOS. For
- example, TECO macros used with OS/8 TECO can be interchanged in .BOO
- format with similar files used with MS-DOS TECO. Intermediary sites,
- such as unix systems will not destroy the "delicate" nature of such
- files, etc.
-
- The KERMIT-12 .BOO utilities are NOT totally compatible with
- existing .BOO utilities on other systems! Just like OS/8 ENCODE and
- DECODE, ENBOO and DEBOO do a perfect encoding/decoding of OS/8 files
- into their original form. When used with "foreign" .BOO decoders,
- some unpredictable things might occur.
-
- Certain other .BOO encoders are known to throw in extraneous null
- bytes at the end of the file. Further, there is a design weakness in
- the original .BOO format that causes more null bytes to possibly
- appear. The KERMIT-12 programs utilize a superset of the original
- format to ensure correct encoding/decoding. When passing these files
- which now contain "correction bytes" to older decoders, the files are
- decoded with inflated lengths because the older decoders don't
- recognize the length correction. When passing files created by older
- encoders to the PDP-8, the resultant decoded files will also have
- inflated lengths because the older encoders failed to place
- correction bytes into the file.
-
- The general rule for dealing with .BOO files originating from
- other systems is that they may have incorrect lengths. The resultant
- files may be (falsely) padded out with extraneous null bytes. In any
- case, since the files generally have no blocking structure, the files
- will be padded by OS/8 up to the nearest whole record or multiple of
- 384 bytes anyway. Unless the file is ASCII and has a ^Z at the end,
- there is no way to determine the original intended file length.
- Files may be padded by null bytes introduced by other systems' bugs,
- the inherent weakness of the original .BOO format, or ultimately by
- OS/8 padding requirements.
-
- ASCII files from other systems may be adjusted by using an editor
- such as TECO which stops at the ^Z. A second generation of the
- transferred file may be somewhat shorter when processed this way.
-
- Should a file originating in OS/8 be intended for OS/8 use only
- (such as an encoding of a .SV file), it should not be decoded on an
- intermediate system, because a re-encoded version may differ from the
- encoded original because of ignored correction bytes, bugs, or the
- inability to insert correction bytes. Violating any of these rules
- could lead to OS/8 files corrupted into being too long. It is
- conceivable that these altered files are even dangerous to use under
- OS/8 because of their inflated lengths. (Certain files are validated
- by their restricted size, such as .HN files which must be exactly two
- or three blocks long depending on whether they are for one or two
- page handlers. If a one-page handler became three pages in file
- length, it could conceivably be confused with a two-page handler,
- etc.)
-
- cjl
-
- ------------------------------
-
- Date: Sun, 7 October 1990 12:00:00 EDT
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: Kermit-12 patching restrictions
-
- All Kermit-12 configuration done according to the documentation
- works "as advertised." Users are tempted to patch the distributed
- image file K12MIT.SV as a "quick and dirty" method to make small
- modifications such as changing the default baud rate, etc. There is
- "conventional wisdom" that this can be accomplished using GET, SAVE
- commands to allow the use of ODT; this method is ordinarily used with
- other OS/8 family programs. It has been reported that this does NOT
- work on OS/278, the usual operating system for the DECmates. The
- following method should be avoided (a work-around is offered later):
-
- .GET SYS KERMIT [setup current image for patching]
-
- .ODT [call in ODT to patch the program]
-
- 7/ 0007 0012 [change default baud rate to 2400]
-
- ^C [^C to exit to monitor]
-
- .SAVE SYS KERMIT [save patched file]
-
- This method follows the exact procedure described in virtually every
- OS/8 document regarding patching of image files. The cited example
- changes the default baud rate from 1200 Baud to 2400 Baud by
- replacing the value chosen from the DEC standard table for 1200 Baud
- with the applicable value for 2400 Baud. This value is stored within
- Kermit-12 as the corresponding twelve-bit word with all high-order
- bits zeroed. (The location used is 000007; this is valid for Version
- 10g, but could change in later versions.)
-
- This attempt to make changes the "conventional" way produces a
- corrupted image file of K12MIT.SV (renamed to KERMIT.SV in the above
- example) when using OS/278 Version 2, the usual operating system on
- the DECmate II, etc. This method probably works in earlier (OS/8
- V3D, etc.) systems, however no attempt has been made to trace this
- bug in prior systems. A "fool-proof" method is required that works
- in spite of bugs in the operating system.
-
- A work-around was attempted using OS/278 V2 on a DECmate II hard
- disk system:
-
- .LOAD SYS:KERMIT.SV/I [load the file in image mode]
-
- .ODT [call in ODT to patch the program]
-
- 7/ 0007 0012 [change default baud rate to 2400]
-
- ^C [^C to exit to monitor]
-
- .SAVE SYS KERMIT [save patched file]
-
- This also fails!
-
- For reasons not understood yet, the following seemingly
- equivalent command DOES work:
-
- .LOAD SYS:KERMIT.SV/I$*$ [load the file in image mode and then
- ask for more input. The $ which is
- printed signifies the use of <ESC>
- as the command terminator. The * is
- printed by the system command
- decoder requesting further input.
- The second $ signifies the use of
- <ESC> to end input to the command
- decoder. The loader program
- terminates and control returns to
- the keyboard monitor.]
-
- .ODT [call in ODT to patch the program]
-
- 7/ 0007 0012 [change default baud rate to 2400]
-
- ^C [^C to exit to monitor]
-
- .SAVE SYS KERMIT [save patched file]
-
- This allows ODT commands to patch the file as intended, and also
- causes the subsequent SAVE command to work properly. All OS/8 family
- systems support this command (as long as CCL is enabled), so it will
- "always" work.
-
- For those users who run with CCL turned off, the following
- sequence will also work:
-
- .R ABSLDR [run the loading program directly]
- *KERMIT.SV/I [load Kermit in image mode]
- *$ [<ESC> is typed to terminate the
- loading process.]
-
- .ODT [call in ODT to patch the program]
-
- 7/ 0007 0012 [change default baud rate to 2400]
-
- ^C [^C to exit to monitor]
-
- .SAVE SYS KERMIT [save patched file]
-
- The newer OS/8 family systems generally can't turn off the CCL
- mechanism. Since the R and RU commands are typically disabled on
- newer releases, only the CCL command work-around applies. Users
- opting to disable CCL are likely running "older" systems, such as
- OS/8 V3D on DECtapes. On these systems, ANY of the above methods
- should work, because the problematic bug didn't exist on those
- systems. Had DEC not gone "backwards" we could have avoided this
- entire discussion!
-
- It is assumed the user will make "correct" patches to KERMIT-12;
- at least there is a "safe and proper" mechanism available to
- accomplish it!
-
- cjl
-
- ------------------------------
-
- Date: Thu, 6 September 1990 12:00:00 EDT
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: Kermit-12 potential problems
-
- A newly implemented ENCODE/DECODE method should eliminate the
- reported problems with regard to passing encoded binary files through
- problematic "paths." The method chosen is a variant on the 5-bit
- encoding algorithm suggested. Encoded files now pass right through
- all of the WPS-related utilities. It is necessary to acquire
- virtually all files of this re-release of KERMIT-12 since all ENCODed
- files are different, as well as the source programs for the
- ENCODing/DECODing utilities themselves. Due to the file being
- "bare", the TECO macro K12GLB.TEC is possibly defective when it
- arrives at a user site; it will now be ENCODed as K12GLB.ENC to avoid
- this problem.
-
- The KERMIT-12 source files are different due to maintenance work,
- requiring the user to obtain the re-released files. The sources now
- include a file to "pre-clear" memory. This aids in reducing the size
- of the ENCODed binary file K12MIT.ENC since undefined areas are no
- longer "relics" of random values, rather they are all set to 0000
- octal. The long strings of identical words will be eliminated since
- the new encoding format does repeat compression.
-
- KERMIT-12 has still not been tested on any DECmates other than
- the DECmate II, as no volunteers have come forward with the proper
- hardware:
-
- DECmate I with DP278A
- DECmate I with DP278B
- DECmate III without internal modem
- DECmate III with internal modem
- DECmate III+
-
- A tentative volunteer for the DECmate I with DP278A configuration
- has been contacted, but testing has not yet started.
-
- cjl
-
- ------------------------------
-
- 26-Jul-90 1:15:43-GMT,15259;000000000001
- Return-Path: <lasner@cunixf.cc.columbia.edu>
- Received: from cunixf.cc.columbia.edu by watsun.cc.columbia.edu (5.59/FCB)
- id AA26223; Wed, 25 Jul 90 21:15:41 EDT
- Received: by cunixf.cc.columbia.edu (5.59/FCB)
- id AA11871; Wed, 25 Jul 90 21:16:19 EDT
- Date: Wed, 25 Jul 90 21:16:18 EDT
- From: Charles Lasner <lasner@cunixf.cc.columbia.edu>
- To: fdc@cunixf.cc.columbia.edu
- Subject: This was sent out to PDP8-LOVERS
- Message-Id: <CMM.0.88.648954978.lasner@cunixf.cc.columbia.edu>
-
- I thought you might want to see this; it refers to the encoding
- problem I reported for a user with the problem (he has no net
- capability) in the programs using that encoding scheme we
- discussed...
-
- From: Charles Lasner (cjl)
- To: PDP8-LOVERS
- Subj: Feedback on encoding issues regarding archived files.
-
- I have written a pair of OS/8 programs to ENCODE and DECODE
- binary files into an "ASCII-fied printable" format. Those of you
- familiar with either uuencode/uudecode or .BOO format will understand
- my intentions. They were originally written for the purpose of
- distribution of binary (.SV) files of KERMIT-12 by Columbia
- University in NY as part of the standard KERMIT collection (K12*.*).
- Columbia imposes a restriction on all files: they must be distributed
- in ASCII only. This is to ensure proper distribution regardless of
- the "path" taken between Columbia and the end user. Be advised that
- various problematic E-mailers, ASCII-EBCDIC EBCDIC-ASCII
- translations, filters for reserved codes, known problematic character
- substitutions, etc. are lurking out there! Consider yourself lucky if
- you get your sender's copy intact without some form of "cosmetic"
- reformatting. By encoding the binary files into an appropriate
- subset of ASCII, these problems hopefully are avoided. While we
- can't prevent ALL problems, we can usually tackle the most likely
- ones.
-
- My original design was based on a discussion I had with Frank da
- Cruz of Columbia University (of KERMIT fame) regarding what to
- restrict ourselves to in a robust format. He was "unhappy" with some
- of the vulnerabilities of the uuencode and .BOO formats, which while
- popular, are not impervious to some "real" problems that have come
- up. We essentially designed an archiving format that was PDP-8
- oriented, but not limited to -8s only. Some of the highlights of the
- format are:
-
- a) File format restricted to "printable" six-bit subset of ASCII
- only. All else ignored; this was to minimize the "garble" factor,
- yet maintain a fairly high rate of efficiency: two ASCII characters
- equal one PDP-8 12-bit word. (This has proved to be problematic and
- is why we are here!)
-
- b) The archive file contains imbedded commands, not implied ones.
- By validating the commands, you can "trust" the contents. Commands
- are available for whatever purpose arises. Already implemented are
- commands to start ("(FILE filename.ext)") and end ("(END
- filename.ext)") the imbedded file, and an official comment command
- ("(REMARK anything)") to help document the contents of the rest of
- the file. This is of course expandable. My OS/8 programs create all
- three types of commands. The start and end commands also
- theoretically allow multiple files in an archive, but I ignore the
- end command in the decoder and only allow one file per archive. I do
- support the start command completely, which includes a suggested name
- for the file. This name can be used at the user's option, or can be
- locally overridden. The encoding program inserts the original file
- name in this field, as this is of course the most likely name for the
- file at the other end.
-
- c) The archive contains a checksum for its contents to ensure the
- validity of the file.
-
- d) All "white space" character considerations are ignored; imbedded
- extraneous space characters, formfeeds, extra CR/LF, etc. are
- harmless. The CR/LF must be present at appropriate intervals, but
- this is only a problem with files passed through unix systems that
- delete the CR. Since OS/8 requires the CR and LF to be considered
- "printable", this is not a problem; the use of programs such as
- c-KERMIT will insert the CR if configured properly (SET FILE TYPE
- TEXT). Programs such as Rahul Dhesi's FLIP program are available to
- correct the problem easily if necessary: FLIP -m *.* or equivalent
- will remedy this.
-
- e) There is an internal record length of 64 characters with framing
- characters, to ensure the validity of each record. This prevents the
- file from getting "out of sync" with its original. This causes each
- line to be 68 characters including CR and LF, which is usually
- reasonable to most systems.
-
- Unfortunately, this scheme has proved to be flawed in an
- important way that "matters." This format must deliver files to
- OS/278 systems by the prevailing paths of existent systems connected
- to DECmates containing only the normally present DEC release
- software. This could include sending the files via DEC-DX through
- WPS8, or acquiring the files on either DECmate CP/M-80 or DECmate
- MS-DOS, possibly using KERMIT-80, or KERMIT-MS as appropriate. If a
- file is received in the CP/M-80 environment, it can be converted to
- WPS8 format using a DEC-supplied program called WPSCONV. If a file
- is received in the MS-DOS environment, it can be converted to WPS8
- format using a DEC-supplied program called CONVERT. Incidentally,
- CONVERT can also convert CP/M-80 files as well, using MS-DOS format
- as an intermediary; WPSCONV is known to have bugs, which were
- corrected in CONVERT (which requires the MS-DOS hardware, not just
- the CP/M-80 hardware). These CP/M-80 and MS-DOS files can also come
- to the DECmate directly from a Rainbow as well, since the
- corresponding Rainbow systems are format compatible with the DECmate.
- DECmate MS-DOS additionally supports IBM-PC diskettes (160K or 180K
- single-sided only and read-only) as yet another source. Thus there
- are many paths to WPS8 versions of our files.
-
- The problem with these methods is that apparently there is a bug
- in OS/278 WPFLOP, the only distributed conversion program a user
- would already have on his OS/278 system. (We haven't actually
- isolated the problem to WPFLOP, as the complaining user was taking
- the files from MS-DOS via CONVERT then to OS/278 via WPFLOP;
- conceivably the problem is in CONVERT, but in any case the problem
- exists somewhere in this supported path.)
-
- The internal encoding used is to break the 12-bit word into two
- six-bit halves. Each half is in the range 00-77 octal. Adding 041
- to the value yields characters in the range of ! through ` or 041
- through 140 octal. The codes for 101-132 are A through Z and can be
- replaced by 141-172 for a through z if desired. This prevents
- case-sensitivity which is another possible network anomaly. We
- identified the DECmate problem as an anomaly regarding @ and `. The
- character codes for 100 and 140 are not treated uniquely, so the
- resulting OS/278 file is an inaccurate representation of the file.
- The decoding program correctly failed the conversion on a checksum
- error, so at least the user was aware of the problem!
-
- As the PDP8-LOVERS, we will hopefully acquire an archive site for
- our files, so all of these considerations will apply. We need a file
- format that is "bullet-proof" to avoid problems like this one. I am
- soliciting suggestions for improvements on this encoding scheme (and
- any other overall file format suggestions as well) to provide an
- effective solution. The resultant programs will be added to the
- KERMIT-12 collection freely distributed by Columbia as well as other
- sources (DECUS, etc.).
-
- Some suggestions have already been made:
-
- 1. Just "quick-fix" the problem by providing an alternate character
- to the ` to make it non-anomalous with @. The available choices are
- { | } and ~ only. The DEL character (octal 177) is unsuitable for
- other reasons; all other characters are either already used, or
- unprintable, or lower-case. This has the advantage of being most
- compatible with the existing programs, since the original character
- code can be supported as well; the "preferred" character would be
- generated by all future versions of the ENCODE program, and existing
- files could be trivially edited for compatibility as needed. This
- would have to be tested -- it is possible that the bug would
- persist. The choice is further narrowed to { and | only, since 175
- and 176 are sometimes treated as alternates to ESC. It is likely
- that systems which "mangle" the case of a character which is
- alphabetic could also do the same to { | } and ~ making them [ \ ]
- and _ respectively. This makes the entire suggestion unworkable.
-
- 2. Change the format to "Hexafied-ASCII" where each PDP-8 12-bit
- word becomes represented by three characters from a 16-character set
- such as 0-9,A-F or A-P. The alphabetic codes would be immune to case
- conversion, and virtually every system supports this subset of ASCII.
- Instead of 64 characters on a line representing 32 12-bit words, each
- line would be 72 characters on a line representing 24 12-bit words
- (not counting framing characters and CR/LF). This also allows for
- many additional codes if needed. This scheme has the drawback of
- making the encoded file more inefficient, as the file will generally
- be 50% longer than those created by the original six-bit scheme.
- This robust scheme is workable.
-
- 3. Modify 2. to include some form of compression. The easiest is to
- incorporate repeat compression. One simple scheme is to use an
- indicator character (R was suggested) as a prefix for an encoded
- count. It could be followed by three characters encoding the value
- of the 12-bit word and two characters encoding the value of the
- repeat count. Since this occupies six characters, as does two
- adjacent 12-bit encoded words, this scheme saves space when used for
- repeat compression lengths greater than two. The compressed field is
- the same length as two compressed "triplets", so overall file
- validation techniques wouldn't require special-case checks, as long
- as trailing "fill" characters were allowed for the last record before
- the short checksum record (which is signalled by its length). (T was
- suggested for this trailer character to be used to pad the last line
- with 0-69 characters.) This allows for compressing 3-258 repeated
- 12-bit words into six characters. This would benefit files
- containing large areas of zeroes or HLT instructions, etc., as this
- can be the actual contents of binary files. If a .BN file created by
- PAL8, etc. is loaded and saved, then "junk" areas are created in the
- .SV file. Unfortunately, this is the norm, and the junk increases
- the size of the encoded version of the file. If the .BN file is
- loaded AFTER loading an all-zeroes file such as the binary output of:
-
- *0
-
- ZBLOCK 7600
-
- $
-
- or equivalent as necessary (extended memory zeroed if required,
- etc.), then the file has all-zeroes gaps in it. These would repeat
- compress out using this scheme. Incidentally, an additional
- advantage of this method is that the resulting "cleaner" core-image
- file is slightly easier to disassemble, in case the source is lost.
- (Anyone who ever disassembled a .SV file or equivalent understands
- what I mean!). This also makes a binary papertape file (such as a
- diagnostic) loaded into a .SV file a little easier to follow when
- consulting the write-up, as memory is zeroed in between the locations
- referenced in the listing. The .SV file is smaller when encoded than
- the .BN file due to elimination of the paper-tape encoding overhead.
- OS/8 files of diagnostics could therefore be more efficiently
- archived as .SV files (encoded) than .BN files.
-
- 4. Change to a 5-bit encoding with compression. This would use 32
- codes chosen from A-Z, 0-9 to encode the file five bits at a time per
- character. Five PDP-8 12-bit words would be encoded in 12
- characters. Since PDP-8 binary files are always multiples of 128
- 12-bit word pages, there would need to be 4.8 "junk words" at the end
- of each block to encode the implied length of 130 words/block. Each
- line would be 78 characters (plus framing characters and CR/LF) so
- that four lines encodes a PDP-8 page, just as in the original six-bit
- scheme (the original scheme used 64 characters per line!). The last
- line of the file would contain 0-77 padding characters as necessary
- to maintain the line width as before. Repeat compression schemes can
- be expressed in any way that is a multiple of 12 characters; perhaps
- one or two adjacent expressions of repeat compression similar to
- above. Expected efficiency of this scheme is similar to the original
- six-bit method, or possibly slightly better; if compression is NEVER
- useful, then the file is 1.2 times as large.
-
- There is an implementation restriction placed on the DECODE
- program: it should be relatively short, since it must be distributed
- in source form. It must also be written in a subset of PAL8
- compatible with the original PAL8 of the PS/8 days (ugh!) to ensure
- viability on any OS/8 family system. PAL8 Version B0 from OS/278 is
- distributed in ENCODed form, so this restriction need not apply to
- any other programs such as the ENCODE program or KERMIT-12, etc. It
- has been determined that PAL8 Version B0 and the companion CREF
- Version B0 will correctly function on any OS/8 family system on any
- PDP-8 member suitably configured to run the operating system the user
- already has running. (There is a minor anomaly when using input files
- from the TTY: handler; see K12MIT.DOC for a detailed explanation.)
- CPU extensions such as BSW and IAC RAL are not present in these
- programs, as was the original intention of OS/8 (which eventually was
- lost as newer members of DEC's programming staff were ignorant of
- this problem!). It is acceptable to have a "bare-bones" subset of
- the DECODE program distributed in "old" PAL8-compatible source form,
- along with a "fancier" version written in a more modern PAL8
- language, as the binary could then be DECODed with the subset DECODE
- program, or the source could be assembled with PAL8 Version B0 to
- "bootstrap" the "full" version of the DECODE program as necessary.
-
- For those of you who can't wait, and want these utilities as they
- stand (using the fallible six-bit method), they are available via
- anonymous FTP from Columbia University (watsun) as
- /w/kermit/d/k12dec.pal and /w/kermit/d/k12enc.pal for the DECODer and
- ENCODer respectively. More information is available in
- /w/kermit/d/k12mit.doc or /w/kermit/d/k12mit.pal regarding use of
- PAL8 Version B0, other assemblers (such as PAL10 or P?S PAL) or other
- KERMIT-12 issues, etc.
-
- Charles Lasner (lasner@cunixf)
- cjl
-
- ------------------------------
-
- Date: Fri, 4 May 90 13:55:02 EDT
- From: Charles Lasner <lasner@watsun.cc.columbia.edu>
- Subject: Kermit-12 problems
-
- If the release files of KERMIT-12 are brought to DECmate MS-DOS
- via any of the various paths that can be used (such as from a Rainbow
- in either CP/M RX50 or MS-DOS RX50 format, etc.; in this particular
- case the reporting user obtained them using IBM-PC SSDD 180k 5-1/4"
- PC-DOS format.) then the files are available as DECmate II MS-DOS or
- CP/M-80 files on one of its standard devices (a:,b:,c:,d: floppies or
- e:,f:,g:,h: hard disk volumes).
-
- The ultimate goal is to get these files (un-scathed!) to DECmate
- II OS/278 for KERMIT-12 installation. The standard DEC CONVERT
- program alledgedly can convert any combination of MS-DOS or CP/M-80
- or WPS/8 from/to each other. By converting the files to WPS/8
- documents, the files can be translated to OS/278 later (using the
- OS/278 WPFLOP utility).
-
- There is a problem with DEC's CONVERT.EXE: it only CORRECTLY
- supports Rainbow/DECmate RX50 MS-DOS and CP/M diskettes, so the other
- formats (8" CP/M-80 diskettes and one-sided PC diskettes) have to be
- pre-converted with the appropriate copy commands to a supported
- diskette or hard disk volume first before using CONVERT. This is not
- a big problem, as we are merely using standard procedures, but the
- point is that much of this is undocumented or obscure. (I had to
- help the reporting user to copy his files to a "friendlier" device
- for CONVERT's benefit which only delayed our discovery of the REAL
- problem!)
-
- The CONVERT program alledgedly supports ASCII/WPS format
- conversion from/to any of MS-DOS, CP/M-80, or WPS/8 (but only on
- a:,b:,c:,d:,e:,f:,g:,h: logical drives, not on the other hardware or
- media possibly hooked up to the DECmate!). Our purpose is to move
- the K12MIT files to WPS/8 format. This can be attempted with
- standard commands of CONVERT, but there apparently is a bug:
-
- When you boot to OS/278 and retrieve the WPS/8 documents (via
- WPFLOP) which are the ENCODed files of KERMIT-12 as OS/278 files,
- there is a character anomaly between two encoding characters
- (specifically @ and `) that destroys the integrity of the affected
- file. This is possibly due to a bug in OS/278 WPFLOP, but more
- likely is a problem with MS-DOS CONVERT. Regardless of the
- perpetrator, this path is not viable to obtain the ENCODed files of
- the KERMIT-12 release.
-
- Fortunately, the source files are not affected, as the anomalous
- characters are not part of the PDP-8 assembly language, and only
- comments could be affected. (As far as I can tell, there aren't any
- affected characters even in the comments!) It is therefore necessary
- to assemble KERMIT-12 directly from the sources when installing it on
- the DECmate II if obtaining it via any path which includes
- CONVERT/WPFLOP. The other ENCODed files are for PAL8 Version B0 and
- CREF Version B0 which are already present on the DECmate II as part
- of the standard release of OS/278 for the DECmate II and are thus
- superfluous. All ENCODed files can be recreated from OS/278 itself
- using the sources, etc., so the intended release files can be
- recreated for distribution to other OS/278 sites (bypassing the
- CONVERT/WPFLOP path). Future versions of the DECODE program will
- obviate this problem when an appropriate alternative format is
- supported properly which is immune to DEC's glitch.
-
- A related problem surrounds the GLOBAL TECO macro K12GLB.TEC (aka
- GLOBAL.TEC). Due to the "delicate" nature of TECO macros, they could
- get "mangled" by the time they get to a user site. Future releases
- of KERMIT-12 will "protect" the macro by ENCODing it into K12GLB.ENC.
- It has also been reported that there are problems running the macro
- on certain releases of OS/8 family TECO and on other TECOs for other
- machines, and also problems running certain versions of OS/8 TECO on
- the DECmates. The author will investigate this problem eventually,
- but the main usage of the macro is for KERMIT-12 source maintainence
- on an OS/8 V3D system using the corresponding version of TECO; it is
- beyond the scope of KERMIT-12 development to investigate the myriad
- releases of TECO and their hardware and operating system
- dependencies; perhaps some TECO hackers can assist us!
-
- An obscure problem indeed! Users give good feedback...
-
- Can you suggest a fix for the CONVERT/WPFLOP-induced corruption?
- One is to allow the current format as a subset, but use a
- substitution character for the garbled character. Our character set
- is the 64 characters from ! through `, so the anomalous occurrences
- of @ are problematic. If we change the preferred character for ` to
- a lower-case letter (only octal 141 up is available, so let's assume
- the use of a) we avoid the CONVERT/WPFLOP problem. Newer released
- ENCODed files would then be immune to the treachery, but would
- require the newer DECODing program (or use TECO to change all
- occurrences of a to ` and then use the old DECODE program).
-
- Should we abandon this inner format altogether? We could use an
- even more robust format like ASCII hex: 0-9 and A-F (allowing a-f as
- well!) at the expense of longer files (currently 2 characters=12
- bits, but would become 3 characters=12 bits). This would also hold
- up better through EBCDIC network conversion...
-
- cjl
-